import os.path
from wsgiref.simple_server import make_server

# 静态资源服务器

def app(env, make_response):
    # 处理业务的最核心函数
    # env是一个字典类型
    """
    请求路径：PATH_INFO，以/开头
    请求方法：REQUEST_METHOD
    请求参数：QUERY_STRING
    客户端地址：REMOTE_ADDR
    请求上传的数据类型：CONTENT_TYPE
    客户端的代理（浏览器）：HTTP_USER_AGENT
    读取请求上传的字节对象：wsgi.input
    标准输入的错误信息：wsgi.errors
    wsgi是否使用了多线程：wsgi.multithread
    wsgi是否使用了多进程：wsgi.ultiprocess
    """
    # for k,v in env.items():
    #     print(k,':',v)

    path = env.get('PATH_INFO')     #获取请求资源路径
    headers = []    #响应头，根据响应的数据增加不同响应的k：v
    body = []       #响应数据
    request_body =env.get('QUERY_STRING')

    # 设置静态资源目录
    static_dir = '/Users/didi1/PycharmProjects/webserver_py903/index'
    if path == '/favicon.ico':
        if request_body == "wuyulian":
            res_path = os.path.join(static_dir,'images/nnn.html')
            #响应头返回这是一个图片信息
            headers.append(('Content-Type','text/html;charset=utf-8'))
        elif request_body == "wuji":
            res_path = os.path.join(static_dir, 'ccc.html')
            headers.append(('Content-Type', 'text/shazi;charset=utf-8'))
        else:
            res_path = ""
    elif path == '/':
        # 默认主页
        # res_path = os.path.join(static_dir,'ccc.html')
        res_path = ""
        headers.append(('Content-Type', 'text/shazi;charset=utf-8'))
    else:
        # 其他资源css、js、MP3、MP4
        # 如：/index/font_3260354_owypszl23lg/demo.css
        #     需要切割一下，不要最前面的/
        res_path = os.path.join(static_dir,path[1:])
        headers.append(('Content-Type', 'text/html;charset=utf-8'))
        if res_path.endswith('.html'):
            headers.append(('Content-Type', 'text/html;charset=utf-8'))
        elif any((res_path.endswith('.gif'),
                 res_path.endswith('.png'),
                 res_path.endswith('.jpeg'))):
            headers.append(('Content-Type', 'image/*'))
        else:
            # 可能是js/css类型或者其他类型
            headers.append(('Content-Type', 'text/*;charset=utf-8'))

    # 请求体校验

    # 生成响应头信息
    # make_response('200 OK',
    #               [('Content-Type', 'text/html;charset=utf-8')])
    # return ['<h3>Hi,WSGI</h3>'.encode('utf-8')]     #响应数据

    # 判断资源是否存在res_path
    status_code = 200
    if not os.path.exists(res_path):
        status_code = 404
        body.append('<h4 style="color:red"> 请求的资源不存在：404</h4>'.encode('utf-8'))
    else:
        with open(res_path,'rb') as f:
            body.append(f.read())
    make_response('%s OK' %status_code,headers)
    return body


# 生成WEB应用服务进程
host = '0.0.0.0'
port = 8000
httpd = make_server('0.0.0.0', 8000, app)
print("running http://%s:%s" % (host, port))

#启动服务，开始监听客户端连接
httpd.serve_forever()
